#include <iostream>
#include <string>
#include <cstdio>
using namespace std;

// const char *q = NULL; // C++中兼容C语言风格的空指针 NULL 写法
const char *q = nullptr; // C++中 空指针的关键字

void func(){
    string s2 = "beijing";
    q = s2.c_str();
    printf("func : q = [%s]\n", q); // beijing
    // s2是局部实例化的对象 在生命周期结束时就被回收了
}

int main(int argc, const char *argv[]){
    string s1 = "hello world";
    // C++中不建议使用 C风格的字符串
    // 但是有些函数又要求使用 首地址 '\0' 的风格
    // sprintf  %s  
    const char *p = s1.c_str();
    printf("p = [%s]\n", p); // hello world

    func();
    // 结果不可预知 因为此时q是野指针
    printf("main : q = [%s]\n", q);

    return 0;
}